package club.xyes.zkh.ecommerce.service;

import club.xyes.zkh.ecommerce.commons.entity.Coupon;
import club.xyes.zkh.ecommerce.commons.entity.Shop;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
 * Create by 郭文梁 2019/4/18 0018 13:40
 * CouponService
 * 优惠券相关业务行为定义
 *
 * @author 郭文梁
 * @data 2019/4/18 0018
 */
public interface CouponService extends BaseService<Coupon> {
    /**
     * 通过商铺查找优惠券
     *
     * @param shop 商铺
     * @return 优惠券
     */
    List<Coupon> findByShop(Shop shop);

    /**
     * 设置优惠券图片
     *
     * @param coupon    优惠券
     * @param imageFile 文件
     * @return Coupon
     * @throws IOException IO异常
     */
    Coupon setImage(Coupon coupon, MultipartFile imageFile) throws IOException;

    /**
     * 找到商铺可发放的优惠券
     *
     * @param shop   商铺
     * @param amount 本次支付金额
     * @return 优惠券
     */
    List<Coupon> findPermissionGrantsOfShop(Shop shop, Integer amount);

    /**
     * 通过商铺查询可用的优惠券
     *
     * @param shop 商铺
     * @return Coupon List
     */
    List<Coupon> findAvailableByShop(Shop shop);

    /**
     * 通过商铺查询过期的优惠券
     *
     * @param shop 商铺
     * @return Coupon List
     */
    List<Coupon> findExpiredByShop(Shop shop);
}
